iT邦幫忙

DAY 15
0

實習、專題除錯筆記系列 第 15

實習、專題除錯筆記(十五)為什麼 for .. in 沒辦法走訪多個物件?

  • 分享至 

  • xImage
  •  

問題十五 為什麼 for .. in 沒辦法走訪多個物件?

今天同事碰到一個問題,他在撰寫 Coffeescript 的時候,她使用 for..in 來走訪物件,但是卻一直跑不出來,一開始原本以為是 Node.js 的平行處理的特性導致的問題,但是後來發現原因只是因為寫錯了。

原因是 for.. in 只能用來走訪「陣列」,而如果要走訪「物件」,需要使用 for...of 才行。

範例:

for variable of object






for variable in array

我查了一下資料,其實 for in 跟 for of 是 ECMAScript 6 才有明確規範的,目前的話是 Coffeescript 自己實做的,舉例來說

arr = [1,2,3,4]
arr2 = 
    '1':2
    '2':3

for i in arr
   console.log i


for i2 of arr2
   console.log i2

這個 Coffeescript 的 Simple Code 會轉成

var arr, arr2, i, i2, _i, _len;

arr = [1, 2, 3, 4];

arr2 = {
  '1': 2,
  '2': 3
};

for (_i = 0, _len = arr.length; _i < _len; _i++) {
  i = arr[_i];
  console.log(i);
}

for (i2 in arr2) {
  console.log(i2);
}

所以在使用 Coffeescript 的時候要注意目標的型態。

參考資料

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of


上一篇
實習、專題除錯筆記(十四)HTML 中的 Select 元素不能用分隔線怎麼辦?
下一篇
實習、專題除錯筆記(十六)Javascript 中如何刪除陣列的值?
系列文
實習、專題除錯筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言